/*
 * PagFormularioTipoAtividade.java
 * 
 * Projeto: Kruskal - SRAC
 * LEDS - Laboratório de Engenharia e Desenvolvimento de Software
 * IFES - Instituto Federal do Espírito Santo - Campus Serra.
 */
package srac.controleatividades.cih;

import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.Executions;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zul.*;
import srac.controleatividades.cci.CtrlInterno;
import srac.controleatividades.cdp.Categoria;
import srac.controleatividades.cdp.TipoAtividade;

public class PagFormularioTipoAtividade extends GenericForwardComposer {

    private CtrlInterno ctrl = CtrlInterno.getInstance();
    private Window winFormularioTipoAtividade;
    private Intbox codigo;
    private Intbox creditos;
    private Textbox unidadeTempo;
    private Textbox descricao;
    private Combobox categorias;
    private TipoAtividade obj;
    private Button salvarTipoAtividade;
    private int MODO;

    @Override
    public void doAfterCompose(Component comp) throws Exception {
        super.doAfterCompose(comp);
        List<Categoria> c = ctrl.obterCategorias();

        categorias.setModel(new ListModelList(c, true));
        categorias.setReadonly(true);
    }

    public void onCreate$winFormularioTipoAtividade() {

        //if feito para verificar se existe algum usuario logado, se nao existir eh redirecionado para o login
        if (Executions.getCurrent().getSession().getAttribute("usuario") == null) {
            Executions.sendRedirect("/");
            winFormularioTipoAtividade.detach();
        }
        else {
        MODO = (Integer) arg.get("tipo");
            if (MODO != ctrl.SALVAR) {
                obj = (TipoAtividade) arg.get("obj");
                preencherTela();
                if (MODO == ctrl.CONSULTAR) {
                    this.salvarTipoAtividade.setVisible(false);
                    bloquearTela();
                }
            }
        }
    }

    private void preencherTela() {
        if (obj.getCategoria() != null) {
            ((ListModelList) categorias.getModel()).addToSelection(obj.getCategoria());
        }
        codigo.setValue(obj.getCodigo());
        creditos.setValue(obj.getCreditos());
        unidadeTempo.setText(obj.getUnidadeTempo());
        descricao.setText(obj.getDescricao());
    }

    private void bloquearTela() {
        categorias.setDisabled(true);
        codigo.setDisabled(true);
        creditos.setDisabled(true);
        unidadeTempo.setDisabled(true);
        descricao.setDisabled(true);
    }

    public void onClick$salvarTipoAtividade(Event event) {
        TipoAtividade t = null;
        String msg = valido();
        if (msg.trim().equals("")) {
            if (MODO == ctrl.EDITAR) {
                obj.setCategoria((Categoria) categorias.getSelectedItem().getValue());
                obj.setCodigo(codigo.getValue());
                obj.setCreditos(creditos.getValue());
                obj.setUnidadeTempo(unidadeTempo.getText());
                obj.setDescricao(descricao.getText());

                
                t = ctrl.alterarTipoAtividade(obj); //Atera o tipo de atividade
                
                if (t != null) {
                    winFormularioTipoAtividade.onClose();
                }
            } 
            else { //Incluir
                ArrayList<Object> list = new ArrayList<Object>();
                list.add(categorias.getSelectedItem().getValue());
                list.add(codigo.getValue());
                list.add(creditos.getValue());
                list.add(unidadeTempo.getText());
                list.add(descricao.getText());
                
                if(ctrl.verificaExistencia(descricao.getText(), codigo.getValue()))
                {
                    Messagebox.show("Já existe um Tipo de Atividade com esse nome ou com esse código!", " ", 0, Messagebox.EXCLAMATION);
                }
                else
                {
                    t = ctrl.incluirTipoAtividade(list); //Inclui uma nova atividade
                }
              
                if (t != null) {
                    winFormularioTipoAtividade.onClose();
                }
            }

        } else {
            
            Messagebox.show(msg, "Informe:", 0, Messagebox.EXCLAMATION);
        }
    }

    public void onClick$voltar(Event event) {
        winFormularioTipoAtividade.onClose();
    }

    public void limparCampos() {
        categorias.setSelectedItem(null);
        codigo.setValue(null);
        creditos.setValue(null);
        unidadeTempo.setText("");
        descricao.setText("");
    }

    private String valido() { //Verifica se esta faltando algum campo
        String msg = "";
        if (categorias.getSelectedItem() == null) {
            msg += "- Categoria\n";
        }
        if (codigo.getValue() == null) {
            msg += "- Codigo\n";
        }
        if (creditos.getValue() == null) {
            msg += "- Creditos\n";
        }

        if (unidadeTempo.getText().trim().equals("")) {
            msg += "- Unidade Tempo\n";
        }
        if (descricao.getValue() == null) {
            msg += "- Descricao\n";
        }

        return msg;
    }
}
